package com.ls.lserp.modules.finance.web;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.collections.map.HashedMap;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.support.RequestContext;

import com.ls.lserp.common.config.Global;
import com.ls.lserp.common.persistence.Page;
import com.ls.lserp.common.utils.StringUtils;
import com.ls.lserp.common.web.BaseController;
import com.ls.lserp.dbaccess.Entity.OgnizationSettlementEntity;
import com.ls.lserp.modules.finance.entity.InitCustomer;
import com.ls.lserp.modules.finance.entity.InitSupplier;
import com.ls.lserp.modules.finance.service.InitSupplierService;

import freemarker.template.Configuration;



	
	@Controller
	@RequestMapping(value = "${adminPath}/init/supplier/")
	public class InitSupplierController extends BaseController{
		
		@Autowired
		private InitSupplierService initSupplierService;
		@Autowired
		Configuration freemarkerConfiguration;
		
		@ModelAttribute
		public InitSupplier get(@RequestParam(required = false) String id) {

			// 判断id是否为空
			if (StringUtils.isNotBlank(id)) {
				// 执行查询语句 查询基本信息
				return initSupplierService.get(Long.parseLong(id));
			} else {
				// 若为空，实例化
				return new InitSupplier();
			}
		}
		
		
		/**
		 * 进入一览画面
		 * 
		 * 
		 * @return
		 */
		@RequiresPermissions("init:supplier:view")
		@RequestMapping(value = { "" })
		public String list(Model model) {
			//返回页面地址
			return "modules/finance/initSupplier";

		}
		
		/**
		 * @Title: 画面检索
		 * @Description: 查询页面
		 * @param materialOutInbound
		 * @param request
		 * @param response
		 * @param model
		 * @return searchList
		 * @throws Exception
		 */
		@RequiresPermissions("init:supplier:view")
		@RequestMapping(value = { "searchList" })
		@ResponseBody
		public String searchList(OgnizationSettlementEntity settlementEntity, HttpServletRequest request, HttpServletResponse response,
				Model model) throws Exception {
			Map<Object, Object> listMap = new HashMap<Object, Object>();
			// ajax回调时使用的一览list名
			request.setAttribute(Global.LIST_NAME, "initSupplier");
			// 拼接字符串供分页使用
			StringBuilder searchParam = new StringBuilder();
			// 客户名称
			searchParam.append("&ognization.ognizationName=");
			searchParam.append(settlementEntity.getOgnization().getOgnizationName());
			// 日期
			searchParam.append("&dateYear=");
			searchParam.append(settlementEntity.getDateYear());
			// 日期
			searchParam.append("&dateMonth=");
			searchParam.append(settlementEntity.getDateMonth());
			// 放到Attribute里，使用Global类里面的SEARCH_PAEAM作为key
			request.setAttribute(Global.SEARCH_PAEAM, searchParam.toString());
			
			// 查询一览页面数据
			Page<OgnizationSettlementEntity> page = initSupplierService.findList(new Page<OgnizationSettlementEntity>(request, response),settlementEntity);
			// 读取系统路径
			String strUri = request.getContextPath() + Global.getAdminPath();
			// 读取文件生成字符串
			String strHtml = "";
			Map<String, Object> map = new HashedMap();
			map.put("adminUri", strUri);
			map.put("initSuppliers", page.getList());
			map.put("pageNo", page.getPageNo());
			map.put("pageSize", page.getPageSize());
			map.put("springMacroRequestContext", new RequestContext (request));
			strHtml = FreeMarkerTemplateUtils
					.processTemplateIntoString(freemarkerConfiguration.getTemplate("initSupplier.ftl"), map);
			listMap.put("initSupplier", strHtml);
			listMap.put("page", page.getHtml());

			// ajax返回结果
			return renderString(response, listMap);
		}
		
		
		/**
		 * 
		 * 功能：Java读取txt文件的内容 1：先获得文件句柄 2：获得文件句柄当做是输入一个字节码流，需要对这个输入流进行读取
		 * 3：读取到输入流后，需要读取生成字节流
		 * 
		 * @param filePath
		 * @return html
		 */
		public String readTxtFile(String filePath) {
			String strHtml = "";
			try {
				String encoding = "UTF-8";
				File file = new File(filePath);
				// 判断文件是否存在
				if (file.isFile()) {
					InputStreamReader read = new InputStreamReader(
							// 考虑到编码格式
							new FileInputStream(file), encoding);
					BufferedReader bufferedReader = new BufferedReader(read);
					String lingText = null;
					while ((lingText = bufferedReader.readLine()) != null) {
						strHtml += lingText;
					}
					read.close();
				} else {

				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			return strHtml;
		} 
		
		
		

}
